<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Genetic Algorithms</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REV="MADE"
HREF="mailto:pgsql-docs@postgresql.org"><LINK
REL="HOME"
TITLE="PostgreSQL 9.1.2 Documentation"
HREF="index.html"><LINK
REL="UP"
TITLE="Genetic Query Optimizer"
HREF="geqo.html"><LINK
REL="PREVIOUS"
TITLE="Query Handling as a Complex Optimization Problem"
HREF="geqo-intro.html"><LINK
REL="NEXT"
TITLE="Genetic Query Optimization (GEQO) in PostgreSQL"
HREF="geqo-pg-intro.html"><LINK
REL="STYLESHEET"
TYPE="text/css"
HREF="stylesheet.css"><META
HTTP-EQUIV="Content-Type"
CONTENT="text/html; charset=ISO-8859-1"><META
NAME="creation"
CONTENT="2011-12-01T22:07:59"></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="5"
ALIGN="center"
VALIGN="bottom"
><A
HREF="index.html"
>PostgreSQL 9.1.2 Documentation</A
></TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="top"
><A
TITLE="Query Handling as a Complex Optimization Problem"
HREF="geqo-intro.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="top"
><A
HREF="geqo.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="60%"
ALIGN="center"
VALIGN="bottom"
>Chapter 51. Genetic Query Optimizer</TD
><TD
WIDTH="20%"
ALIGN="right"
VALIGN="top"
><A
TITLE="Genetic Query Optimization (GEQO) in PostgreSQL"
HREF="geqo-pg-intro.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="GEQO-INTRO2"
>51.2. Genetic Algorithms</A
></H1
><P
>    The genetic algorithm (<ACRONYM
CLASS="ACRONYM"
>GA</ACRONYM
>) is a heuristic optimization method which
    operates through randomized search. The set of possible solutions for the
    optimization problem is considered as a
    <I
CLASS="FIRSTTERM"
>population</I
> of <I
CLASS="FIRSTTERM"
>individuals</I
>.
    The degree of adaptation of an individual to its environment is specified
    by its <I
CLASS="FIRSTTERM"
>fitness</I
>.
   </P
><P
>    The coordinates of an individual in the search space are represented
    by <I
CLASS="FIRSTTERM"
>chromosomes</I
>, in essence a set of character
    strings. A <I
CLASS="FIRSTTERM"
>gene</I
> is a
    subsection of a chromosome which encodes the value of a single parameter
    being optimized. Typical encodings for a gene could be <I
CLASS="FIRSTTERM"
>binary</I
> or
    <I
CLASS="FIRSTTERM"
>integer</I
>.
   </P
><P
>    Through simulation of the evolutionary operations <I
CLASS="FIRSTTERM"
>recombination</I
>,
    <I
CLASS="FIRSTTERM"
>mutation</I
>, and
    <I
CLASS="FIRSTTERM"
>selection</I
> new generations of search points are found
    that show a higher average fitness than their ancestors.
   </P
><P
>    According to the <SPAN
CLASS="SYSTEMITEM"
>comp.ai.genetic</SPAN
> <ACRONYM
CLASS="ACRONYM"
>FAQ</ACRONYM
> it cannot be stressed too
    strongly that a <ACRONYM
CLASS="ACRONYM"
>GA</ACRONYM
> is not a pure random search for a solution to a
    problem. A <ACRONYM
CLASS="ACRONYM"
>GA</ACRONYM
> uses stochastic processes, but the result is distinctly
    non-random (better than random).
   </P
><DIV
CLASS="FIGURE"
><A
NAME="GEQO-DIAGRAM"
></A
><P
><B
>Figure 51-1. Structured Diagram of a Genetic Algorithm</B
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><A
NAME="AEN93757"
></A
><TABLE
BORDER="0"
FRAME="void"
CLASS="CALSTABLE"
><COL><COL><TBODY
><TR
><TD
>P(t)</TD
><TD
>generation of ancestors at a time t</TD
></TR
><TR
><TD
>P''(t)</TD
><TD
>generation of descendants at a time t</TD
></TR
></TBODY
></TABLE
><P
></P
></DIV
><PRE
CLASS="LITERALLAYOUT"
>+=========================================+
|&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;  Algorithm GA  &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;|
+=========================================+
| INITIALIZE t := 0                       |
+=========================================+
| INITIALIZE P(t)                         |
+=========================================+
| evaluate FITNESS of P(t)                |
+=========================================+
| while not STOPPING CRITERION do         |
|   +-------------------------------------+
|   | P'(t)  := RECOMBINATION{P(t)}       |
|   +-------------------------------------+
|   | P''(t) := MUTATION{P'(t)}           |
|   +-------------------------------------+
|   | P(t+1) := SELECTION{P''(t) + P(t)}  |
|   +-------------------------------------+
|   | evaluate FITNESS of P''(t)          |
|   +-------------------------------------+
|   | t := t + 1                          |
+===+=====================================+</PRE
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="geqo-intro.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="geqo-pg-intro.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Query Handling as a Complex Optimization Problem</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="geqo.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Genetic Query Optimization (<ACRONYM
CLASS="ACRONYM"
>GEQO</ACRONYM
>) in PostgreSQL</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>